package com.dhcc.DRGsHosp.facade.impl;

import java.util.List;
import java.util.Map;

import javax.inject.Named;

import org.openkoala.security.shiro.CurrentUser;
import org.springframework.beans.factory.annotation.Autowired;

import com.dhcc.DRGsHosp.application.MrqDictRulesApplication;
import com.dhcc.DRGsHosp.core.domain.MrqDictRules;
import com.dhcc.DRGsHosp.facade.MrqDictDetailFacade;
import com.dhcc.DRGsHosp.facade.MrqDictRulesFacade;
import com.dhcc.DRGsHosp.infra.util.DrgsIndex;

/**
 *
 * @Description:    质控规则字典facadeImpl
 * @param:
 * @return:
 * @auther: chenhanlin
 * @date: 2018/7/26 16:19
 */
@Named("drgsHospMrqDictRulesFacadeImpl20181212")
public class MrqDictRulesFacadeImpl implements MrqDictRulesFacade {
	
	@Autowired
	private MrqDictRulesApplication  application;
	@Autowired
	private MrqDictDetailFacade mrqDictDetailFacade;
	/**
	 *
	 * 功能描述: 查询有效质控规则
	 *
	 * @param:hospName 医院名称
	 * @return:
	 * @auther: chenhalin
	 * @date: 2018/7/25 14:46
	 */
	@Override
	public List<MrqDictRules> findAllMrqDictRules(String hospName) {
		List<MrqDictRules> resultList = application.findAllMrqDictRules(hospName);
		return resultList ;
	}

	/**
	 *  功能描述：根据主键值ruleCode修改字段field的值
	 *  @Author QiaoYiLong
	 *  @param ruleCode 主键
	 *  @param field  字段名称
	 *  @param value  字段值
	 *  @return sql执行成功修改的数据条数
	 *  @Date:2018年8月21日下午2:37:30
	 */
	@Override
	public int updateField(String ruleCode,String field,String value){
		int count = application.updateField(ruleCode, field, value);
		if(count >0){
			MrqDictRules mdr = application.getMrqDictRules(ruleCode);
            String str = "修改质控规则--"+DrgsIndex.formateDateFrom(null)+"--  名称："+CurrentUser.getName()+",  账号："+CurrentUser.getUserAccount()+",  角色："+CurrentUser.getRoleName()
        	+",  操作：将 MRQ_DICT_RULES 表里面rule_name 为 "+mdr.getRuleName()+" rule_code="+ruleCode+" 的记录的 "+field+" 值设置为 "+value+" \r\n";
            mrqDictDetailFacade.recordOperationLog(str);
		}
		return count;
	}
	/**
	 *  功能描述：根据detailCode的值查找质控规则
	 *  @Author QiaoYiLong
	 *  @param detailCode  外键
	 *  @return 质控规则列表
	 *  @Date:2018年8月21日下午5:19:36
	 */
	@Override
	public  List<Map<String,Object>> getFieldsByDetailCode(String detailCode){
		return application.getFieldsByDetailCode(detailCode);
	}
	
	/**
	 *  功能描述：将detail_code为detailCode的记录中的valid_flag(是否启用字段)全部修改为value
	 *  @Author QiaoYiLong
	 *  @return sql执行成功修改的数据条数
	 *  @Date:2018年9月17日上午11:42:30
	 */
	@Override
	public int updateAll(String detailCode,String value){
		int count = application.updateAll(detailCode, value);
		if(count >0){
            String str = "修改质控规则--"+DrgsIndex.formateDateFrom(null)+"--  名称："+CurrentUser.getName()+",  账号："+CurrentUser.getUserAccount()+",  角色："+CurrentUser.getRoleName()
        	+",  操作：将 MRQ_DICT_RULES 表里面detail_code 为 "+detailCode+" 的所有记录的  valid_flag 值设置为 "+value+" \r\n";
            mrqDictDetailFacade.recordOperationLog(str);
		}
		return count;
	}
}
